java io

您所在的位置:网站首页 ebook reader是什么意思啊 java io

java io

2023-10-28 13:20| 来源: 网络整理| 查看: 265

在前几篇文章中一直讲的都是InputStream,这是操作字节流的类,然而我们在程序中往往要从文件等stream中读取字符信息,如果只用InputStream能否读取字符信息呢?当然可以。但是这涉及到了一个编码和解码的问题,传输双方必须才用同一种编码方式才能正确接收,这就导致每次在传输时,传输方需要做这么几件事:

1)将需要传输的字符编码成指定字节

2)传输字节

接收方需要做这么几件事:

1)接收字节

2)将字节解码成对应的字符

我们看一下下面的例子:

我在对应目录有一个文件,这个文件是按照utf-8编码的,现在利用InputStream读取到一个byte数组中,如果我们想要读取到文件的内容,还需要继续转码成utf-8格式的字符串。

import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.charset.Charset; /** * Created by zhaohui on 16-10-14. */ public class Code { public static void main(String[] args) { try { FileInputStream inputStream = new FileInputStream("/home/zhaohui/tmp/zhaohui"); byte[] buf = new byte[100]; int length = inputStream.read(buf); System.out.println("the length of bytes is " + length); // 将字节数组中指定位置的字节转码成对应的字符串 String content = new String(buf, 0, length, Charset.forName("utf-8")); System.out.println("the content is " + content); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }

输出:

the length of bytes is 16

the content is 你好吗?

从上面的例子中,我们看到只有InputStream就能解决传输字符串的问题了,但是每次都要先读成byte字节,再进行转码,麻烦,能不能直接传字符呢?????

 

答案是:不能!!!

计算机只认识0和1,也就是byte,只能传输byte。

但是别人的博客都说Reader和Writer神马的能传啊?这是理解角度的不同,我就认为不能传字符,爱咋咋地!

 

好的,我现在就正式介绍这个“能”传字符的Reader(



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3